package com.tony.blog.server.service.web;

import com.tony.blog.model.entity.BlogEntity;
import com.tony.blog.model.entity.CommentEntity;
import com.tony.blog.model.request.*;
import com.tony.blog.model.entity.SysUserEntity;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import java.util.List;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 *
 * @Title: IIndexCenterService
 * @Auther: 皮蛋布丁
 * @Date: 2021/08/15/18:46
 * @Description:
 */
public interface IndexCenterService {

    /**
    * @Description: data 获取首页数据列表信息(向下滚动分页)
    * @Param: [paramMap]
    * @return: java.util.Map<java.lang.String,java.lang.Object>
    * @Author: 皮蛋布丁
    * @Date: 2021/8/15 18:48
    */
    Map<String,Object> data(Map<String,Object> paramMap) throws Exception;

    /**
    * @Description: getInfoByUserId 获取个人信息
    * @Param: [userId]
    * @return: java.util.Map<java.lang.String,java.lang.Object>
    * @Author: 皮蛋布丁
    * @Date: 2021/8/19 19:59
    */
    Map<String,Object> getInfoByUserId(Long userId);

    /**
    * @Description: uploadImg 上传微博图片
    * @Param: [request]
    * @return: java.util.Map<java.lang.String,java.lang.Object>
    * @Author: 皮蛋布丁
    * @Date: 2021/8/21 23:15
    */
    Map<String,Object> uploadImg(MultipartHttpServletRequest request) throws Exception;

    /**
    * @Description: sendBlog 发微博
    * @Param: [request, userId]
    * @return: java.lang.Integer
    * @Author: 皮蛋布丁
    * @Date: 2021/8/24 23:07
    */
    Integer sendBlog(BlogRequest request, Long userId) throws Exception;

    /**
    * @Description: concernOn 关注
    * @Param: [request, entity]
    * @return: java.lang.Integer
    * @Author: 皮蛋布丁
    * @Date: 2021/8/28 20:55
    */
    Integer concernOn(ConcernRequest request, SysUserEntity entity);

    /**
    * @Description: concernCancel 取消关注
    * @Param: [request, userId]
    * @return: java.lang.Integer
    * @Author: 皮蛋布丁
    * @Date: 2021/8/29 21:59
    */
    Integer concernCancel(ConcernRequest request, Long userId);

    /**
    * @Description: praiseOn 点赞
    * @Param: [request, entity]
    * @return: java.lang.Integer
    * @Author: 皮蛋布丁
    * @Date: 2021/8/30 15:59
    */
    Integer praiseOn(OperationRequest request, SysUserEntity entity);

    /**
    * @Description: praiseCancel 取消点赞
    * @Param: [request, userId]
    * @return: java.lang.Integer
    * @Author: 皮蛋布丁
    * @Date: 2021/8/30 22:06
    */
    Integer praiseCancel(OperationRequest request, Long userId);

    /**
    * @Description: collectOn 收藏
    * @Param: [request, userId]
    * @return: java.lang.Integer
    * @Author: 皮蛋布丁
    * @Date: 2021/8/31 20:59
    */
    Integer collectOn(OperationRequest request, Long userId);

    /**
    * @Description: collectCancel 取消收藏
    * @Param: [request, userId]
    * @return: java.lang.Integer
    * @Author: 皮蛋布丁
    * @Date: 2021/9/1 22:10
    */
    Integer collectCancel(OperationRequest request, Long userId);

    /**
    * @Description: commentOn 评论
    * @Param: [request, entity]
    * @return: java.lang.Integer
    * @Author: 皮蛋布丁
    * @Date: 2021/9/5 20:49
    */
    Integer commentOn(CommentRequest request, SysUserEntity entity);

    /**
    * @Description: deleteSelfBlog 删除微博
    * @Param: [request, entity]
    * @return: java.lang.Integer
    * @Author: 皮蛋布丁
    * @Date: 2021/9/9 22:07
    */
    Integer deleteSelfBlog(IdRequest request, SysUserEntity entity) throws Exception;

    /**
    * @Description: replyOn 回复
    * @Param: [request, entity]
    * @return: java.lang.Integer
    * @Author: 皮蛋布丁
    * @Date: 2021/9/10 11:12
    */
    Integer replyOn(ReplyRequest request, SysUserEntity entity);

    /**
    * @Description: getCommentsByBlog 获取博文回复列表数据
    * @Param: [blogId]
    * @return: java.util.List<com.tony.blog.model.entity.CommentEntity>
    * @Author: 皮蛋布丁
    * @Date: 2021/9/10 11:44
    */
    List<CommentEntity> getCommentsByBlog(Integer blogId);

    /**
    * @Description: forwardBlog 转发微博
    * @Param: [request, entity]
    * @return: java.lang.Integer
    * @Author: 皮蛋布丁
    * @Date: 2021/9/10 14:23
    */
    Integer forwardBlog(BlogForwardRequest request, SysUserEntity entity) throws Exception;

    /**
    * @Description: getBlogByUserId 获取我的博文或别人已转发的博文
    * @Param: [paramMap]
    * @return: java.util.Map<java.lang.String,java.lang.Object>
    * @Author: 皮蛋布丁
    * @Date: 2021/9/10 15:29
    */
    Map<String,Object> getBlogByUserId(Map<String, Object> paramMap) throws Exception;

    /**
    * @Description: getMyPraisesBlog 获取我点赞过的博文信息列表
    * @Param: [paramMap]
    * @return: java.util.Map<java.lang.String,java.lang.Object>
    * @Author: 皮蛋布丁
    * @Date: 2021/9/10 16:04
    */
    Map<String,Object> getMyPraisesBlog(Map<String, Object> paramMap) throws Exception;

    /**
    * @Description: getMyCollectsBlog 获取我收藏的博文信息列表
    * @Param: [paramMap]
    * @return: java.util.Map<java.lang.String,java.lang.Object>
    * @Author: 皮蛋布丁
    * @Date: 2021/9/16 10:08
    */
    Map<String,Object> getMyCollectsBlog(Map<String, Object> paramMap) throws Exception;

    /**
    * @Description: getMyFriendsBlog 获取我的朋友圈
    * @Param: [userId]
    * @return: java.util.List<com.tony.blog.model.entity.BlogEntity>
    * @Author: 皮蛋布丁
    * @Date: 2021/9/16 10:47
    */
    List<BlogEntity> getMyFriendsBlog(Long userId);

    /**
    * @Description: initLuceneData Lucene数据初始化
    * @Param: []
    * @return: void
    * @Author: 皮蛋布丁
    * @Date: 2021/9/28 10:44
    */
    void initLuceneData();

    /**
    * @Description: dataSearchLucene 首页全文检索-Lucene
    * @Param: [paramMap]
    * @return: java.util.Map<java.lang.String,java.lang.Object>
    * @Author: 皮蛋布丁
    * @Date: 2021/9/28 11:32
    */
    Map<String,Object> dataSearchLucene(Map<String, Object> paramMap) throws Exception;
}
